package model.dao;

import model.dao.entity.*;
import model.entity.*;
import model.entity.product.Product;

public class JPAHiberDAOFactory {
	private static JPAHiberDAOFactory instance;
	
	public synchronized static JPAHiberDAOFactory getInstance() {
		if (instance == null)
			instance = new JPAHiberDAOFactory();
		return instance;
	}
	
	public AbstractDAO<ConcreteBill, Integer> getBillDAO() {
        return new BillDAO();
    }
	
	public AbstractDAO<Brand, Integer> getBrandDAO() {
		return new BrandDAO();
	}
	
	public AbstractDAO<Device, Integer> getDeviceDAO() {
		return new DeviceDAO();
	}
	
	public AbstractDAO<Employee, Integer> getEmployeeDAO() {
		return new EmployeeDAO();
	}
	
	public AbstractDAO<Event, Integer> getEventDAO() {
		return new EventDAO();
	}
	
	public AbstractDAO<Member, Integer> getMemberDAO() {
		return new MemberDAO();
	}
	
	public AbstractDAO<MemberLevel, Integer> getMemberLevelDAO() {
		return new MemberLevelDAO();
	}
	
	public AbstractDAO<Product, Integer> getProductDAO() {
		return new ProductDAO();
	}
}
